home *** CD-ROM | disk | FTP | other *** search
- #
- # Demos for 3D Transformations.
- #
- # (c) Gershon Elber, July 1995
- #
-
- comment $
- pause = procedure():
- printf("Press return to continue:", nil());
- $
-
- AnimObj = load("solid8") * sc( 0.7 );
- color( AnimObj, green );
- attrib( AnimObj, "dwidth", 3 );
-
- color( Axes, yellow );
- attrib( Axes, "dwidth", 4 );
-
- #
- # 3D transformation's demo.
- #
- AnimDemo = list( Axes, AnimObj );
- interact( AnimDemo );
-
-
- # SCALING uniformly.
- #
- scl = cbspline( 3,
- list( ctlpt( E1, 1 ),
- ctlpt( E1, 3 ),
- ctlpt( E1, 0 ),
- ctlpt( E1, 0 ),
- ctlpt( E1, 1 ) ),
- list( KV_OPEN ) );
- scl = creparam( scl, 0, 1 );
- attrib( AnimDemo, "animation", list( scl ) );
- interact( list( AnimDemo ) );
-
- #
- # SCALING in X, Y, and Z operations.
- #
- scl = cbspline( 3,
- list( ctlpt( E1, 1 ),
- ctlpt( E1, 3 ),
- ctlpt( E1, 0 ),
- ctlpt( E1, 0 ),
- ctlpt( E1, 1 ) ),
- list( KV_OPEN ) );
- scl_x = creparam( scl, 0, 0.33 );
- scl_y = creparam( scl, 0.33, 0.67 );
- scl_z = creparam( scl, 0.67, 1 );
- attrib( AnimDemo, "animation", list( scl_x, scl_y, scl_z ) );
- interact( list( AnimDemo ) );
-
- #
- # SCALING with NEGATIVE values.
- #
- scl = cbspline( 2,
- list( ctlpt( E1, 1 ),
- ctlpt( E1, -1 ) ),
- list( KV_OPEN ) );
- scl_x = creparam( scl, 0, 0.33 );
- scl_y = creparam( scl, 0.33, 0.67 );
- scl_z = creparam( scl, 0.67, 1 );
- attrib( AnimDemo, "animation", list( scl_x, scl_y, scl_z ) );
- interact( list( AnimDemo ) );
-
- #
- # ROTATIONs
- #
- rot = cbspline( 2,
- list( ctlpt( E1, 0 ),
- ctlpt( E1, 360 ) ),
- list( KV_OPEN ) );
- rot_x = creparam( rot, 0, 0.33 );
- rot_y = creparam( rot, 0.33, 0.67 );
- rot_z = creparam( rot, 0.67, 1 );
- attrib( AnimDemo, "animation", list( rot_x, rot_y, rot_z ) );
- interact( list( Axes, AnimDemo ) );
-
- #
- # TRANSLATION in the plane.
- #
- mov = cbspline( 3,
- list( ctlpt( E1, 0.0 ),
- ctlpt( E1, 0.7 ),
- ctlpt( E1, 0.7 ),
- ctlpt( E1, -0.7 ),
- ctlpt( E1, -0.7 ),
- ctlpt( E1, 0.0 ) ),
- list( KV_OPEN ) );
- mov_x = creparam( mov, 0, 0.33 );
- mov_y = creparam( mov, 0.33, 0.67 );
- mov_z = creparam( mov, 0.67, 1 );
- attrib( AnimDemo, "animation", list( mov_x, mov_y, mov_z ) );
- interact( list( AnimDemo ) );
-
- #
- # PROJECTION onto XY plane.
- #
- rot_x = ctlpt( E1, 0.0 ) + ctlpt( E1, 360 );
- rot_y = ctlpt( E1, 0.0 ) + ctlpt( E1, 180 );
- rot_z = ctlpt( E1, 0.0 ) + ctlpt( E1, 720 );
- mov_z = cbspline( 3,
- list( ctlpt( E1, 1.2 ),
- ctlpt( E1, 2.0 ),
- ctlpt( E1, 1.2 ) ),
- list( KV_OPEN ) );
- proj = sz( 0.001 );
-
- Obj = AnimObj;
- ObjProj = AnimObj;
-
- attrib( Obj, "animation", list( rot_x, rot_z, rot_y, mov_z ) );
- attrib( ObjProj, "animation", list( rot_x, rot_z, rot_y, proj ) );
- rmattr( Axes, "animation" );
- interact( list( Axes, Obj, ObjProj ) );
-